﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Business.Classes;
using DAL;

namespace UI
{
    public partial class meusFavoritos : System.Web.UI.Page
    {
        FavoritoBusiness favoritoBusiness;
        Usuario user = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            user = (Usuario)Session["user"];
            if (user == null)
            {
                Response.Redirect(new Controlador.Controladora().GetPageLogin());
            }
            pnFalha.Visible = false;
            pnSucesso.Visible = false;

            favoritoBusiness = new FavoritoBusiness();
            if (!IsPostBack)
            {
                PreencheGridDeFavoritos();
            }
        }

        protected void gvFavoritos_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                gvFavoritos.EditIndex = e.RowIndex;
                PreencheGridDeFavoritos();

                PostNew postNew = new PostNewBusiness().getPostNewByID(Convert.ToInt32(gvFavoritos.DataKeys[e.RowIndex]["idPostNew"]));

                favoritoBusiness.DeleteFavorito(postNew, new UsuarioBusiness().getUsuarioByID(user.idUsuario));
                //Decrementa pontos do dono da postNew
                new UsuarioBusiness().IncrementaPontos(postNew.Usuario, -1);

                PreencheGridDeFavoritos();

                pnSucesso.Visible = true;
                lbMsgSucesso.Text = "Favorito excluido com sucesso!";
            }
            catch (Exception ex)
            {
                pnFalha.Visible = true;
                lbMsgFalha.Text = "Falha ao deletar favorito! Detalhe: <br/>" + ex.Message;
            }
           
        }

        private void PreencheGridDeFavoritos()
        {
            try
            {
                gvFavoritos.DataSource = favoritoBusiness.GetAllFavoritosByUser(new UsuarioBusiness().getUsuarioByID(user.idUsuario));
                gvFavoritos.DataBind();
            }
            catch (Exception ex)
            {
                pnFalha.Visible = true;
                lbMsgFalha.Text = "Falha ao listar favoritos! Detalhe: <br/>" + ex.Message;
            }
            
        }
    }
}
